'''
读文件相关的操作
'''
import configparser
import os

import yaml


def get_project_path():
    '''
    获取工程路径：D:\PycharmProjects\ApiAutoTest\zonghe\
    :return:
    '''
    file_path = os.path.realpath(__file__)   #当前文件路径
    dir__path = os.path.dirname(file_path)   #获取文件所在目录的路径
    dir__path = os.path.dirname(dir__path)   #获取上一级路径
    return dir__path + '\\'

def read_ini(file_path, key):
    '''
    读配置文件，根据key取value
    :param file_path: 文件路径
    :param key: key
    :return: key对应的value
    '''
    # configparser 是python中专门读配置文件的模块
    config = configparser.ConfigParser()
    config.read(get_project_path() + file_path)
    # env 对应ini文件中的[env]，也就是section
    value = config.get('env',key)
    return value

def read_yaml(file_path):
    '''
    读取yaml文件
    :param file_path: yaml文件路径
    :return:
    '''
    file_path = get_project_path() + file_path
    with open(file_path,'r',encoding='utf-8') as f:
        content = f.read()  #读取文件内容
        # 转成yaml格式的
        return yaml.load(content,Loader=yaml.FullLoader)

# 测试代码，用完可以删除
if __name__ == '__main__':
    print(get_project_path())
    # 绝对路径使用时不方便，如果不存在c盘，或者不存在这个路径，脚本无法执行
    # D:\PycharmProjects\ApiAutoTest\zonghe\dataenv\env.ini，这一段的路径通过脚本自动获取
    url = read_ini(r'dataenv\env.ini','url')
    print(url)
    db = read_ini(r'dataenv\env.ini','db')
    print(db)
    print(read_yaml(r'datacase/register_fail.yaml'))